; locais são acessíveis somente dentro do corpo do procedimento
(let ((a 3)
      (b 4))
  (* a b))
;;
(let ((nome "Gustav")
      (sobrenome "Klimt"))
  (string-append nome " " sobrenome))

;;Alinhando let's
(let ((nome"Gustav")
      (sobrenome "Klimt"))
  (let ((nome-completo
         (string-append nome " " sobrenome)))
    nome-completo))


;;Evitando lets aninhados com let*
(
 let* ((nome "Gustav")
       (sobrenome "Klimt")
       (nome-completo (string-append nome " " sobrenome )))
  (display (string-append nome-completo "\n")))

;;Variáveis globais
(define saudacao "Olá, ")

(define cria-nome
  (lambda ()
    (let ((nomes '("Gustav" "Pablo" "Ludwig" "Frida"))
          (sobrenomes '("Klimt"  "Mahler" "Picasso" "van Beethoven""Kahlo")))
      (let ( (indice-nome 1)
             (indice-sobre 2))
        (print (string-append
                (list-ref nomes indice-nome)
                " "
                (list-ref sobrenomes indice-sobre)))))))

;;let como variante de lambda
(let ((a 3)
      (b 4))
  (* a b))

(display (+ 11 13))

